package qdu.rg05.test_srv;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
/**
 * ---------------------------------------
 *--请将你的笔记注释到程序末尾，否则行号会不准确--
 * ---------------------------------------
 *
 * 首先我们暂时规定: 发起服务请求的安卓组件称为“启动端”，被请求的服务组件称为“服务端”
 *（在一些教材中，我们的“启动端”被称为“客户端”，这里并没有C/S模式存在，只不过比较像）
 * 安卓服务有两套生命周期模式，如课件程序中背景图片所示。
 * 分别为非绑定模式（line 35）和绑定模式（line 53）。
 */
public class Act1 extends Activity {
    Intent it, it_bind;
    Myconn mc;
    Srv_2.Mybinder mb;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ly_act1);
        View.OnClickListener mylis = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch(view.getId()){
                    case R.id.btn_nobind:
                        it = new Intent(Act1.this, Srv_1.class);
                        startService(it);
                        break;
                    case R.id.btn_stop_nobind:
                        if(it != null)
                            stopService(it);
                        break;
                }
            }
        };
        findViewById(R.id.btn_stop_nobind).setOnClickListener(mylis);
        findViewById(R.id.btn_nobind).setOnClickListener(mylis);
        //*********************************************************8
        View.OnClickListener mylis_bind = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch(view.getId()){
                    case R.id.btn_bind_create:
                        it_bind = new Intent(Act1.this, Srv_2.class);
                        mc = new Myconn();
                        bindService(it_bind,mc, Context.BIND_AUTO_CREATE);
                        Log.i("mytag", String.valueOf(mc.hashCode()));
                        break;
                    case R.id.btn_bind_stop:
                        try{
                            if(mb != null)
                                mb = null;
                            unbindService(mc);
                        }catch(Exception e){

                        }
                        break;
                    case R.id.btn_bind_getsrv:
                        if(mb != null)
                            mb.getService();
                        break;

                }
            }
        };
        findViewById(R.id.btn_bind_create).setOnClickListener(mylis_bind);
        findViewById(R.id.btn_bind_stop).setOnClickListener(mylis_bind);
        findViewById(R.id.btn_bind_getsrv).setOnClickListener(mylis_bind);
        Log.i("mytag", "Act1 oncreat...");
    }
    class Myconn implements ServiceConnection {

        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            Log.i("mytag","service connected....");
            mb = (Srv_2.Mybinder) iBinder;
            //((Srv_2.Mybinder)iBinder).getService();
        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            Log.i("mytag","service disconnected....");
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("mytag", "Act1 ondestroy...");
    }
}
